package com.panda.web.utils.pageutils;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageInfo;
import com.panda.common.core.page.TableDataInfo;

import java.util.List;

/**
 * 分页工具类
 *
 * @author admin
 * @date 2024/03/20
 */
public class PaginationUtil {
    /**
     * 获取页面信息
     *
     * @param list        列表
     * @param currentPage 当前页面
     * @param pageSize    页面大小
     * @return {@link TableDataInfo}
     */
    public static <T> TableDataInfo getPageInfo(List<T> list, Integer currentPage, Integer pageSize) {
        int total = list.size();

        // 计算分页起始位置和结束位置
        int startIndex = (currentPage - 1) * pageSize;
        int endIndex = Math.min(startIndex + pageSize, total);

        List<T> pageList = list.subList(startIndex, endIndex);

        // 构造分页对象
        Page<T> page = new Page<>(currentPage, pageSize);
        page.addAll(pageList);
        page.setPages((total + pageSize - 1) / pageSize);
        page.setTotal(total);

        // 构造 PageInfo 对象
        PageInfo<T> pageInfo = new PageInfo<>(page);

        // 构造 TableDataInfo 对象
        TableDataInfo rspData = new TableDataInfo();
        rspData.setCode(200); // 设置成功的状态码
        rspData.setMsg("ok"); // 设置成功的消息
        rspData.setRows(pageList);
        rspData.setTotal(pageInfo.getTotal());
        return rspData;
    }
}

